package com.linshidream.intrachat.simplenio.packet.context;

import com.linshidream.intrachat.simplenio.packet.handler.*;
import java.nio.ByteBuffer;
import java.nio.channels.Selector;
import java.nio.channels.SocketChannel;

/**
 * Created on 2025/8/1 18:11
 *
 * @author linshidream
 * @version 1.0.0
 * @description
 */

public interface ConnectionContext {

    /**
     * 获取通道
     * @return
     */
    SocketChannel channel();


    /**
     * 获取该通道监听器
     * @return
     */
    Selector selector();

    /**
     * 获取该通道的写缓冲区
     * @return
     */
    PacketWriter writer();

    /**
     * 获取通道编码器（编码/解码）
     * @return
     */
    MessageCodec codec();

    /**
     * 获取通道处理器（读写数据）
     * @return
     */
    PacketHandler handler();

    /**
     * 累计未读取缓冲区
     * @param buffer
     * @return
     */

    ByteBuffer accumulate(ByteBuffer buffer);

}
